// 左旋转字符串
class Solution {
public:
    string reverseLeftWords(string s, int n)
    {
        //思路：全翻一次
        //前n个到了尾部 将他们翻转一次
        //再将剩下的未翻转的翻转一次
        //abcdefg
        reverse(s.begin(),s.end());
        //gfedcba
        reverse(s.begin(),s.end()-n);
        //cdefgba
        reverse(s.end()-n,s.end());
        return s;
    }
};
//有效的括号

class Solution {
public:
    bool isValid(string s) 
    {
        stack<char>st;
        for(int i=0;i<s.size();i++)
        {
            if(s[i]=='(' || s[i]=='[' ||s[i]=='{') 
            {
                st.push(s[i]);
            }
            else
            {
                if(st.empty()) return false;

                if(s[i]==')' && st.top()=='(') st.pop();
                else if(s[i]=='}' && st.top()=='{') st.pop();
                else if(s[i]==']' && st.top()=='[') st.pop();
                else 
                {
                    return false;
                }
            }
        }
        return st.empty();
    }
};
//删除字符串中的所有相邻重复项
class Solution {
public:
    string removeDuplicates(string s) 
    {
        stack<char> st;
        st.push(s[0]);
        for(int i=1;i<s.size();i++)
        {
            if(!st.empty() && s[i]==st.top())
            {
                st.pop();
            }
            else
            {
                st.push(s[i]);
            }
        }
        string res="";
        while(!st.empty())
        {
            char ch=st.top();
            res+=ch;
            st.pop();
        }
        reverse(res.begin(),res.end());
        return res;
    }
};